package org.gpf.singleton;

/**
 * 使用同步代码块和双重判断改进单态模式【线程安全，比同步代码方法效率高】
 * @author gaopengfei
 * @date 2015-4-21 下午12:48:25
 */
public class Singleton4 {

	private static Singleton4 singleton = null;

	private Singleton4() {
		
	}
	
	public static final Singleton4 getInstance(){
		
		if(singleton == null) // 如果对象为空则进入同步代码块，效率提高很多
			synchronized (Singleton4.class) {	// 静态方法，该类的Class类
				// 第二个检验锁，因为可能有多个线程进入到 if 语句内
				if(singleton == null)
					singleton = new Singleton4();
			}
		return singleton;
	}
}
